/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ec.socialfun.entidades;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author hp
 */
@Entity
@Table(name = "membresia")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Membresia.findAll", query = "SELECT m FROM Membresia m"),
    @NamedQuery(name = "Membresia.findByMeCodigo", query = "SELECT m FROM Membresia m WHERE m.meCodigo = :meCodigo"),
    @NamedQuery(name = "Membresia.findByMeEstado", query = "SELECT m FROM Membresia m WHERE m.meEstado = :meEstado"),
    @NamedQuery(name = "Membresia.findByMePuntosAcumulados", query = "SELECT m FROM Membresia m WHERE m.mePuntosAcumulados = :mePuntosAcumulados"),
    @NamedQuery(name = "Membresia.encontrarDuplicado", query = "SELECT m FROM Membresia m WHERE m.loCodigo.loCodigo = :loCodigo and m.usCodigo.usCodigo = :usCodigo"),
    @NamedQuery(name = "Membresia.recuperarEstado", query = "SELECT m.meEstado FROM Membresia m WHERE m.loCodigo.loCodigo = :loCodigo and m.usCodigo.usCodigo = :usCodigo"),
    @NamedQuery(name = "Membresia.recuperarMembresiaActivaPorUsuarioLocal", query = "SELECT m FROM Membresia m WHERE m.loCodigo.loCodigo = :loCodigo and m.usCodigo.usCodigo = :usCodigo and m.meEstado =:meEstado")})
public class Membresia implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "ME_CODIGO")
    private Integer meCodigo;
    @Basic(optional = false)
    @Column(name = "ME_ESTADO")
    private String meEstado;
    @Basic(optional = false)
    @Column(name = "ME_PUNTOS_ACUMULADOS")
    private int mePuntosAcumulados;
    @Basic(optional = false)
    @Column(name = "ME_FECHA_CREACION")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date meFechaCreacion;
    @Basic(optional = false)
    @Column(name = "ME_ACEPTA_TERMINOS_Y_COND")
    private String aceptaTerminos;
    @JoinColumn(name = "LO_CODIGO", referencedColumnName = "LO_CODIGO")
    @ManyToOne(optional = false)
    private Local loCodigo;
    @JoinColumn(name = "US_CODIGO", referencedColumnName = "US_CODIGO")
    @ManyToOne(optional = false)
    private Usuario usCodigo;

    public Membresia() {
    }

    public Membresia(Integer meCodigo) {
        this.meCodigo = meCodigo;
    }

    public Membresia(Integer meCodigo, String meEstado, int mePuntosAcumulados) {
        this.meCodigo = meCodigo;
        this.meEstado = meEstado;
        this.mePuntosAcumulados = mePuntosAcumulados;
    }

    public Integer getMeCodigo() {
        return meCodigo;
    }

    public void setMeCodigo(Integer meCodigo) {
        this.meCodigo = meCodigo;
    }

    public String getMeEstado() {
        return meEstado;
    }

    public void setMeEstado(String meEstado) {
        this.meEstado = meEstado;
    }

    public int getMePuntosAcumulados() {
        return mePuntosAcumulados;
    }

    public void setMePuntosAcumulados(int mePuntosAcumulados) {
        this.mePuntosAcumulados = mePuntosAcumulados;
    }

    public Date getMeFechaCreacion() {
        return meFechaCreacion;
    }

    public void setMeFechaCreacion(Date meFechaCreacion) {
        this.meFechaCreacion = meFechaCreacion;
    }

    public Local getLoCodigo() {
        return loCodigo;
    }

    public void setLoCodigo(Local loCodigo) {
        this.loCodigo = loCodigo;
    }

    public Usuario getUsCodigo() {
        return usCodigo;
    }

    public void setUsCodigo(Usuario usCodigo) {
        this.usCodigo = usCodigo;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (meCodigo != null ? meCodigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Membresia)) {
            return false;
        }
        Membresia other = (Membresia) object;
        if ((this.meCodigo == null && other.meCodigo != null) || (this.meCodigo != null && !this.meCodigo.equals(other.meCodigo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.ec.socialfun.entidades.Membresia[ meCodigo=" + meCodigo + " ]";
    }

    public String getAceptaTerminos() {
        return aceptaTerminos;
    }

    public void setAceptaTerminos(String aceptaTerminos) {
        this.aceptaTerminos = aceptaTerminos;
    }
}
